﻿using PhraseCorrector.Common;
using PhraseCorrector.DirectTanslate;
using PhraseCorrector.SimplePinyin;
using PhraseCorrector.SpellCorrect;
using PhraseCorrector.WordLineSplit;
using System.Collections.Generic;
using System.Net.Http.Headers;

namespace PhraseCorrector
{
    /// <summary>
    /// 拼写校正类，用于对中文和英文文本进行拼写校正和翻译。
    /// 默认情况下，PhraseCorrect类将使用内置的词库进行拼写校正和翻译。
    /// 同时，PhraseCorrect类还支持自定义词库，以实现对特定领域或语言的拼写校正和翻译。
    /// 最后，PhraseCorrect类还支持自定义词库的加载和卸载，以实现对动态数据的支持。
    /// </summary>
    public interface IPhraseCorrect {

        #region 调入所有的词库

        #endregion

        #region 拼音分词、汉字拼音、拼音纠错

        ////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// 获取给定中文文本的拼音。
        /// </summary>
        /// <param name="word">要获取拼音的中文文本。</param>
        /// <returns>单词的拼音。</returns>
        public string GetPinyin(string word);

        ////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// 根据拼音获取对应的中文文本。
        /// </summary>
        /// <param name="pinyin">要转换的拼音。</param>
        /// <returns>返回对应的中文文本。</returns>
        public PhraseResult GetPyText(string pinyin);

        #endregion


        #region 中文纠错

        ////////////////////////////////////////////////////////////////////////////           
        /// <summary>
        /// 纠正中文术语的拼写错误,得到在最大距离内相似度最高的修正术语。
        /// </summary>
        /// <param name="phraseString">需要纠错的中文术语。</param>
        /// <returns>返回一个ECResult对象，包含纠错后的英文、中文、拼音，以及器最大错误距离和相似度。</returns>
        public PhraseResult ChinesePhraseCorrect(string phraseString);

        #endregion

        #region 西文纠错

        ////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// 检查并纠正英语短语的拼写错误。
        /// </summary>
        /// <param name="text">需要进行拼写检查的英语短语。</param>
        /// <returns>返回一个ECResult对象，其中包含了翻译后的中文、英文及拼音属性，以及距离和相似度。</returns>
        public PhraseResult EnglishPhraseCorrect(string text);
        #endregion

        #region 中/西文/拼音对照纠错

        ////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// 通过提供的中文、英文或拼音关键字进行中英文匹配。
        /// </summary>
        /// <param name="chinese">包含中文关键字的源对象。</param>
        /// <param name="letters">包含英文/拼音关键字的源对象。</param>
        /// <returns>返回一个新的ECResult对象，包含匹配结果。</returns>
        public PhraseResult ChineseEnglishPinyinMache(string chinese, string letters);

        #endregion

        #region 中/西文/拼音/数字解析纠错

        ////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// 通过提供的中文、英文或拼音关键字进行中英文匹配。
        /// </summary>
        /// <param name="chinese">包含中文关键字的源对象。</param>
        /// <param name="letters">包含英文/拼音关键字的源对象。</param>
        /// <returns>返回一个新的ECResult对象，包含匹配结果。</returns>
        public PhraseResult WordLineMache(string line);
        #endregion
    }
}
